블루투스 코드로 했을때 폰으로 조종이 되다가 벽가까이만 가면 미쳐 돌아가는데 코드가 잘못된건가여 아니면 블루트스가 잘못된건가요
블투스랑 초음파랑 같이 되는 건가요? 그럼 어디를 고쳐야 될까요?
#include <SoftwareSerial.h>
#include <AFMotor.h>
AF_DCMotor motor_L(1);
AF_DCMotor motor_R(4);
#define BT_RXD A5
#define BT_TXD A4
SoftwareSerial bluetooth(BT_RXD, BT_TXD);
char rec_data;
bool rec_chk = false;
int i;
int j;
//초음파센서 출력핀(trig)과 입력핀(echo) 설정
int trigPin = A0;
int echoPin = A1;
void setup(){
Serial.begin(9600); // PC와의 시리얼 통신속도
bluetooth.begin(9600); // 스마트폰 블루투스 통신속도
Serial.println("Eduino Smart Car Start!");
pinMode(echoPin, INPUT); // echoPin 입력
pinMode(trigPin, OUTPUT); // trigPin 출력
// turn on motor
motor_L.setSpeed(200); // 왼쪽 모터의 속도
motor_L.run(RELEASE);
motor_R.setSpeed(200); // 오른쪽 모터의 속도
motor_R.run(RELEASE);
}
void loop(){
if(bluetooth.available()){ // 블루투스 명령 수신
rec_data = bluetooth.read();
Serial.write(rec_data);
rec_chk = true;
}
if(rec_data == 'g'){ // 전진, go
motor_L.run(FORWARD); motor_R.run(FORWARD);
}
else if(rec_data == 'b'){ // 후진, back
motor_L.run(BACKWARD); motor_R.run(BACKWARD);
}
else if(rec_data == 'l'){ // 좌회전, Go Left
motor_L.run(RELEASE); motor_R.run(FORWARD);
}
else if(rec_data == 'r'){ // 우회전, Go Right
motor_L.run(FORWARD); motor_R.run(RELEASE);
}
else if(rec_data == 'q'){ // 제자리 회전, Left Rotation
motor_L.run(BACKWARD); motor_R.run(FORWARD);
}
else if(rec_data == 'w'){ // 제자리 회전, Right Rotation
motor_L.run(FORWARD); motor_R.run(BACKWARD);
}
else if(rec_data == 's'){ // Stop
motor_L.run(RELEASE); motor_R.run(RELEASE);
}
if(rec_data == 'f' ){ // 정지
if(rec_chk == true){
for (i=250; i>=0; i=i-20) {
motor_L.setSpeed(i); motor_R.setSpeed(i);
delay(10);
}
}
}
}
이거 그대로 썼습니다
일단 해당 현상은 블루투스가 간헐적으로 끊기는 것으로 보여집니다
1. 주변에 블루투스를 방해할만한 전파가 많은지(블루투스나 와이파이등 ISM대역 전파가 많으면 간헐적으로 끊길 수 있어요)
2. 폰에서 다른 블루투스 장비도 페어링이 동시에 되어 있다면 해제하고 진행해보세요
3. 블루투스 모듈이 소모 전류가 많기 때문에 공급전원이 부족한지 점검
위 세개로 점검해보시겠어요?